package com.lgj.gateway.config;

import lombok.extern.slf4j.Slf4j;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.reactive.CorsWebFilter;
import org.springframework.web.cors.reactive.UrlBasedCorsConfigurationSource;
import org.springframework.web.util.pattern.PathPatternParser;

/**
 * @author: guangjie.liao
 * @Date: 2022/11/8 19:17
 * @Description: 跨域处理
 */
@Slf4j
@Configuration
public class CorsConfig {
    @Bean
    public CorsWebFilter corsFilter() {
        log.info("----------------------- 跨域 初始化----------------");
        // 初始化cors配置对象
        CorsConfiguration config = new CorsConfiguration();
        //设置允许哪些url访问跨域资源,*表示全部允许
        config.addAllowedOrigin("*");
        //允许访问的头信息,*表示全部
        config.addAllowedHeader("*");
        //允许所有请求方法(GET,POST等)访问跨域资源
        config.addAllowedMethod("*");
        // 预检请求的缓存时间（秒），即在这个时间内，对于相同的跨域请求不会再预检了
        config.setMaxAge(18000L);
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(new PathPatternParser());
        source.registerCorsConfiguration("/**", config);
        return new CorsWebFilter(source);
    }
}
